The existing array entries will retain their 
values, except that any index made smaller 
will have the corresponding array entries 
lost. Any index made larger will have the 
new array entries uninitialized (if applicable).

Additionally, the upper bound (both in the declaration 
and the new statement) can be made one less than the 
lower bound. This effectively makes an array that 
contains 0 elements. It can later be increased in 
size with another new.

In the current implementation (2003), with a multi-dimensional 
array with a non-zero number of total elements, it is a 
run-time error to change any but the first dimension 
(unless one of the new upper bounds is one less than 
the corresponding lower bound, giving 0 elements in 
the array) as the algorithm to rearrange the element 
memory locations has not yet been implemented.

Currently, only variables can be declared in this form. 
There is no flexible array parameter type, although a 
flexible array can be passed to an array parameter 
with "*" as the upper bound.
